{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "b240de8e",
   "metadata": {},
   "source": [
    "# 插值模块"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c5296cc",
   "metadata": {},
   "source": [
    "scipy.interpolate是SciPy中负责插值操作的子模块："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a4ef6bd3",
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy import interpolate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e5eed2d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "12b96e17",
   "metadata": {},
   "source": [
    "插值（Interpolation）是通过已知的离散数据点求未知数据的过程或方法。例如，考虑这样一组离散数据点："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4bbdadd1",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.linspace(0, 2*np.pi, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "8aba3b5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "y = np.sin(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "66495975",
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e1755997",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12bacdb20>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x, y, \"o\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "14fabfb9",
   "metadata": {},
   "source": [
    "这些数据点x的维度为1，因此是个一维插值问题。一维插值问题对应的函数为`interpolate.interp1d()`："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "43c53f10",
   "metadata": {},
   "outputs": [],
   "source": [
    "f = interpolate.interp1d(x, y)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "1bd51e60",
   "metadata": {},
   "source": [
    "返回值f可以像函数一样被调用。当输入值为数字时，f返回一个NumPy数组："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e5e88976",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(0.)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "dcfec593",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.48209071, 0.95511217])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f([np.pi / 6, np.pi / 2])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "4e9ca4b6",
   "metadata": {},
   "source": [
    "默认情况下，插值函数允许的定义域范围由输入数据的范围决定。对于超出范围的数据，调用f会抛出异常。在上面的例子中，x的范围为0到2倍圆周率，因此输入负数会报错。\n",
    "\n",
    "可以通过在调用插值函数时，加入bounds_error参数来允许超出范围的输入："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "443a7134",
   "metadata": {},
   "outputs": [],
   "source": [
    "f = interpolate.interp1d(x, y, bounds_error=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4f93f5bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(nan)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f(-np.pi)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "4fcd2a8c",
   "metadata": {},
   "source": [
    "还可以加入fill_value参数指定超出范围的默认返回值："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ba4a2d08",
   "metadata": {},
   "outputs": [],
   "source": [
    "f = interpolate.interp1d(x, y, bounds_error=False, fill_value=-100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3ed2c222",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(-100.)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f(-np.pi)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "d032805e",
   "metadata": {},
   "source": [
    "线性插值对应的函数如图8-2所示："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "49164d5e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.linspace(0, 2 * np.pi, 200)\n",
    "\n",
    "f = interpolate.interp1d(x, y)\n",
    "plt.plot(x, y, 'o', t, f(t))\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "7742c5d1",
   "metadata": {},
   "source": [
    "可以通过加入`kind`参数，实现不同的插值方法。\n",
    "\n",
    "- 'nearest'：最近邻插值，x对应的值为离x最近的点对应的值。\n",
    "- 'zero'：零阶插值，使用一个常数分段函数进行插值。\n",
    "- 'linear'：线性插值，默认插值方法。\n",
    "- 'quadratic'：二次函数插值。\n",
    "- 'cubic'：三次函数插值。\n",
    "- 数字4，5，6，7：更高次数的函数插值。\n",
    "\n",
    "例如最近邻："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "9519b943",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.linspace(0, 2 * np.pi, 200)\n",
    "\n",
    "f = interpolate.interp1d(x, y, kind=\"nearest\")\n",
    "plt.plot(x, y, 'o', t, f(t))\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "5fec4c36",
   "metadata": {},
   "source": [
    "三次插值："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ca1d57b6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t = np.linspace(0, 2 * np.pi, 200)\n",
    "\n",
    "f = interpolate.interp1d(x, y, kind=\"cubic\")\n",
    "plt.plot(x, y, 'o', t, f(t))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "28057662",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
